from utils.logger import Logger
from utils.file_utils import parse_docx
from utils.model_client import ModelClient
from utils.excel_writer import write_to_excel

def main(input_file, output_file):
    # 初始化日志
    global logger
    logger = Logger().get_logger()

    # 初始化模型客户端
    with open("config/api_keys.json", "r") as f:
        api_key = eval(f.read())["dashscope_api_key"]
    model_client = ModelClient(api_key=api_key)

    # 解析输入文件
    doc_content = parse_docx(input_file)

    # 生成测试用例
    prompt = (
        f"请根据以下文档内容生成测试用例：\n\n{doc_content}\n\n"
        "每个测试用例必须严格按照以下Markdown格式输出：\n"
        "### 测试用例 [编号]:\n"
        "- **用例标题**: 描述测试用例的目标。\n"
        "- **测试步骤**: 描述执行测试的具体步骤。\n"
        "- **测试数据**: 提供测试所需的输入数据。\n"
        "- **测试结果**: 描述预期的测试结果。\n"
        "---\n\n"
        "要求：\n"
        "- 必须包含正常场景和异常场景。\n"
        "- 如果存在边界值时，需要考虑边界值、特殊输入等场景。\n"
        "- 确保测试用例的准确性和可读性。\n"
    )
    generated_text = model_client.generate_response(prompt)

    # 解析测试用例
    from utils.test_case_parser import parse_test_cases
    test_cases = parse_test_cases(generated_text)

    # 写入Excel文件
    write_to_excel(test_cases, output_file)

    logger.info(f"测试用例已生成并保存至: {output_file}")

if __name__ == "__main__":
    input_file = "data/input/requirements.docx"
    output_file = "data/output/test_cases.xlsx"
    main(input_file, output_file)